//
// Created by 28365 on 2025/3/5.
//

#ifndef ODUPDATERSDK_ISTREAMTRANSMIT_H
#define ODUPDATERSDK_ISTREAMTRANSMIT_H

class IStreamTransmit;

#include <fstream>
#include "../include/obj/Res.h"
#include "../include/ODUpdater.h"

using namespace std;

/**
 * 传输流接口
 * <p>该接口用于接入数据传输时的操作，例如：进度条监听等</p>
 */
class IStreamTransmit {

public:
//    /**
//     * 传输操作
//     * @param outStream 输出流
//     * @param buff 输入流里读取的缓存
//     * @param size 缓存数据大小
//     * @param odUpdater 更新器实例
//     */
//    virtual void transmit(ofstream &outStream,char* buff,streamsize size,IUpdater &odUpdater) = 0;

    /**
     * 传输后回调
     * @param nowTransmissionSize 当前传输量
     * @param transmissionSize 当前已传输的大小
     * @param fileSize 资源文件总大小
     * @param res 当前传输的资源
     * @param odUpdater 更新器实例
     */
    virtual void postTransmit(size_t nowTransmissionSize,size_t transmissionSize,size_t fileSize,const Res &res,const ODUpdater &odUpdater) = 0;

    virtual ~IStreamTransmit() = default;

};


#endif //ODUPDATERSDK_ISTREAMTRANSMIT_H
